package br.com.tiespec.ejb.EjbInterface;

import java.io.Serializable;
import java.util.List;

import br.com.tiespec.model.Enum.TipoSortOrder;
import br.com.tiespec.model.Modelo.Anexo;
import br.com.tiespec.model.Modelo.Artefato;
import br.com.tiespec.model.Modelo.Documento;
import br.com.tiespec.model.Modelo.Projeto;
import br.com.tiespec.model.Util.RNException;

public interface ArtefatoInterface extends Serializable {

	public abstract void salvarArtefato(Artefato artefatoInstance) throws RNException;

	public abstract void atualizarArtefato(Artefato artefatoInstance) throws RNException;
	
	public abstract void excluirArtefato(Long idArtefato) throws RNException;

	public abstract List<Artefato> listarArtefato(int first, int pageSize, String sortField,
			TipoSortOrder convertePrimeFaces, Long idClientePortal,
			String nome, String projeto, String descricao);

	public abstract int countArtefato(Long idClientePortal, String nome,
			String projeto, String descricao);

	public abstract Artefato selecionarArtefato(Long id);
	
	public abstract Artefato selecionarArtefatoCompleto(Long id);
	
	public abstract Artefato selecionarArtefatoComUsuarioEProjeto(Long id);

	public abstract List<Anexo> listarAnexo(int first, int pageSize, String sortField,
			TipoSortOrder sortOrder, Long idArtefato, String nome);

	public abstract int countAnexo(Long idArtefato, String nome);
	
	public abstract Anexo selecionarAnexo(Long id);

	public abstract void salvarAnexo(Anexo anexoInstance) throws RNException;;

	public abstract void excluirAnexo(Long idAnexo) throws RNException;;

	public abstract List<Documento> listarDocumento(int first, int pageSize, String sortField,
			TipoSortOrder sortOrder, Long idArtefato, String nome);

	public abstract int countDocumento(Long idArtefato, String nome);
	
	public abstract Documento selecionarDocumento(Long id);

	public abstract void salvarDocumento(Documento documentoInstance) throws RNException;;

	public abstract void excluirDocumento(Long idDocumento) throws RNException;

	public abstract List<Projeto> listarProjeto(int first, int pageSize,
			String sortField, TipoSortOrder sortOrder,
			Long idClientePortal, String codigo, String nome, String cliente);

	public abstract int countProjeto(Long idClientePortal, String codigo, String nome, String cliente);

	public abstract Projeto selecionarProjeto(Long idProjeto);

}
